package com.zpark.oop.day07.demo;

/**
 * 该类只允许存在5个对象
 */
public class Student {
    private String name; // 姓名
    private String kungfu; // 功夫

    // 提供全参构造器
    private Student(String name, String kungfu) {
        this.name = name;
        this.kungfu = kungfu;
    }

    // 定义一个工厂，由工厂负责创建对象
    public static Student createStudent(String name, String kungfu) {
        return new Student(name, kungfu);
    }

    private static Student stu;
    /**
     * 要求：定义一个工厂，由工厂负责创建对象。但是如果该类已经创建过对象，则不在创建
     * 并且将已经创建的对象返回
     *
     * 单例工厂
     */
    public static Student createStudent1(String name, String kungfu) {
        // 判断stu是否为null
        if (stu == null) {
            // 如果为null，则创建对象，否则直接返回stu
            stu = new Student(name, kungfu);
        }
        return stu;
    }

    // 只提供获取属性值的方法
    public String getName() {
        return name;
    }

    public String getKungfu() {
        return kungfu;
    }

}
